#include "BulletSoftBody/btDeformableContactProjection.h"
#ifdef __cplusplus
extern "C" {
#endif
bool bullet_btDeformableContactProjection_GetFieldOfM_useStrainLimiting(btDeformableContactProjection* c_this){
	return (bool)(c_this->m_useStrainLimiting);
}

double bullet_btDeformableContactProjection_solveSplitImpulse(btDeformableContactProjection* c_this,btCollisionObject** deformableBodies,int numDeformableBodies,btContactSolverInfo* infoGlobal){
	btCollisionObject * * c_arg_deformableBodies=(btCollisionObject * *)(void*)(deformableBodies);
	int c_arg_numDeformableBodies=numDeformableBodies;
	btContactSolverInfo const& c_arg_infoGlobal=(btContactSolverInfo const&)(*infoGlobal);
	btScalar c_out = c_this->solveSplitImpulse(c_arg_deformableBodies,c_arg_numDeformableBodies,c_arg_infoGlobal);
	double wrap_out = (c_out);
	return wrap_out;
}

LagrangeMultiplier* bullet_NewLagrangeMultiplier(){
	LagrangeMultiplier* wrap_out = new LagrangeMultiplier();
	return wrap_out;
}

btVector3** bullet_LagrangeMultiplier_GetFieldOfM_dirs(LagrangeMultiplier* c_this){
	return (btVector3**)(&c_this->m_dirs);
}

int** bullet_LagrangeMultiplier_GetFieldOfM_indices(LagrangeMultiplier* c_this){
	return (int**)(&c_this->m_indices);
}

int bullet_LagrangeMultiplier_GetFieldOfM_num_constraints(LagrangeMultiplier* c_this){
	return (int)(c_this->m_num_constraints);
}

int bullet_LagrangeMultiplier_GetFieldOfM_num_nodes(LagrangeMultiplier* c_this){
	return (int)(c_this->m_num_nodes);
}

double** bullet_LagrangeMultiplier_GetFieldOfM_weights(LagrangeMultiplier* c_this){
	return (double**)(&c_this->m_weights);
}

#ifdef __cplusplus
}
#endif
